﻿//   EELCompiler (Program.cs)
//
//   Copyright 2009 Eric Llewellyn
//
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//       http://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LibEELbeta;
using System.IO;

namespace EELCompiler
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Usage:\n\tEELCompiler input [output]\n");
                return;
            }
            string outputFileName = (new FileInfo(args[0])).DirectoryName + "\\binary.eel";
            if (args.Length > 1)
                outputFileName = args[1];

            Interpreter interpreter = new Interpreter();
            interpreter.SyntaxError += new SyntaxErrorDelegate(interpreter_SyntaxError);

            string line;
            byte[] output;

            StreamReader sr = new StreamReader(args[0]);
            line = sr.ReadToEnd();
            sr.Close();

            output = interpreter.Compile(line);

            BinaryWriter bw = new BinaryWriter(new FileStream(outputFileName, FileMode.Create));
            bw.Write(output);
            bw.Close();
        }

        static void interpreter_SyntaxError(string msg, Token t)
        {
            System.Console.WriteLine("stdin" + ":" + t.line + ": " + msg + " near " + t.value);
        }
    }
}
